/**
 * 原始值：Undefined、Null、Boolean、Number、String 和 Symbol
 * 引用值是保存在内存中的对象，Object、Array 和 Function
 */


const arr = [12, 3]
console.log(typeof arr); // object
console.log(arr instanceof Array); // true

/**
 * 动态属性
 */
let person = new Object();
person.name = "MasterH"; // 添加属性
console.log(person.name); // "MasterH"

let myName = "MasterH";
myName.age = 27; // 给原始值添加属性没有用
console.log(myName.age); // undefined

/**
 * 复制值
 * 
 */
let num1 = 5;
let num2 = num1; // num1 和 num2 互相独立

let obj1 = new Object();
let obj2 = obj1; // obj1 和 obj2 指向同一个对象
obj1.name = "MasterH";
console.log(obj2.name); // "MasterH"

/**
 * 传递参数
 * 所有函数的参数都是按值传递的
 */
function addTen(num) {
    num += 10;
    return num;
}
let count = 20;
console.log(addTen(count)); // 30
console.log(count); // 20 没有变化

function setName(obj) {
    obj.name = "MasterH";
}
let person = new Object(); // 函数内部 obj 与 外部 person 指向同一个的对象 
setName(person);
console.log(person.name); // "MasterH"



